/**
 * \file led.h
 * \brief Header du driver des LEDs et du BarLED.
 * \author Pierrick.C
 * \version 0.8
 * \date 22 février 2011
 *
 * Implémentation des APIs de la LED status et du BarLED.
 *
 * \test Routine de test du driver
 * - allume la LED 3 (allumerLedBar)
 * \n OK
 * - eteind tous (barTousEteindre)
 * \n OK
 * - allume jusqu'au niveau 5 (barAllumerNiveau)
 * \n OK
 * - eteind la LED 2 (eteindreLedBar)
 * \n OK
 * - eteind tout
 * \n OK
 * - allume tout
 * \n OK
 * 
 */

#ifndef H_LED
#define H_LED

/**
 * \def D_ON				
 * D:data du multiplexer
 * \def D_OFF				
 * \def SEL_ON				
 * LE: selection de mode:adressable latch ou memory
 * \def SEL_OFF									
 * \def S0_ON				
 * A0: adresse du multiplexer
 * \def S0_OFF				
 * \def S1_ON				
 * A1
 * \def S1_OFF				
 * \def S2_ON				
 * A2
 * \def S2_OFF				
 * \def STATUS_LED_ON      
 * Allume la LED STATUS
 * \def STATUS_LED_OFF     
 * Eteint la LED STATUS
 */

#define			D_ON				P6OUT |= BIT0     	//P6.0 // D:data du multiplexer
#define			D_OFF				P6OUT &= ~BIT0     	//P6.0


#define			SEL_ON				P6OUT |= BIT7     	//P6.7 // LE: selection de mode:-adressable latch
#define			SEL_OFF				P6OUT &= ~BIT7     	//P6.7							-memory

#define			S0_ON				P6OUT |= BIT1     	//P6.1  // A0: adresse du multiplexer
#define			S0_OFF				P6OUT &= ~BIT1     	//P6.1
#define			S1_ON				P6OUT |= BIT2     	//P6.2	// A1
#define			S1_OFF				P6OUT &= ~BIT2     	//P6.2
#define			S2_ON				P6OUT |= BIT3     	//P6.3	// A2
#define			S2_OFF				P6OUT &= ~BIT3     	//P6.3

#define         STATUS_LED_ON      P2OUT &= ~BIT1    //Allume la LED STATUS
#define         STATUS_LED_OFF     P2OUT |= BIT1     //Eteint la LED STATUS

/**
 * \fn void initLedBar(void)
 * \brief Initialise le LedBar
 *
 */
 
void initLedBar(void); //initialise les port

/**
 * \fn void allumerLedBar(int num);
 * \brief Allume un LED sur le LedBar
 * 
 * \param num position de la LED comprise entre 1 et 8
 * 
 */
 
void allumerLedBar(int num);	//allume la LED a la position num

/**
 * \fn void eteindreLedBar(int num)
 * \brief Etteind un LED sur le LedBar
 * 
 * \param num position de la LED comprise entre 1 et 8
 *
 */
 
void eteindreLedBar(int num);	//eteint la LED a la position num

/**
 * \fn void barAllumerNiveau(int niveau)
 * \brief Allume les LEDs jusqu'à un certain niveau
 * 
 * \param num niveau d'allumage
 *
 */
 
void barAllumerNiveau(int niveau);	//allume les LED jusqu'à la position num (incluse)

/**
 * \fn void barTousEteindre(void)
 * \brief Eteint toutes les LEDs
 *
 */
 
void barTousEteindre(void);	// eteint toute les LED

/**
 * \fn void barTousAllumer(void)
 * \brief Allume toutes les LEDs
 *
 */
 
void barTousAllumer(void);	//allume toute les LED



#endif
